Dn4 <- read.csv2("G:/Maitrise/ACP4 Salaire-Distance-Age.csv") Dn4 maxVal<-dim(Dn4)[1]-1 # Représentation 3D cloud(Dn4$Sal~Dn4$Dist*Dn4$Age) polaire <- function(x,y){ rho<-sqrt(x^2+y^2) if (x==0){ if (y==0){ teta<-0 }else{ teta<-y/abs(y)*90 } }else{ teta<-(x/abs(x)-1)*-90+atan(y/x)*180/pi } while(teta > 180){teta<-teta-360} while(teta < -180){teta<-teta+360} return(c(rho,teta)) } cartesienne <- function(rho,teta){ x<-rho*cos(teta*pi/180) y<-rho*sin(teta*pi/180) return(c(x,y)) } rotation <- function(ang,x,y){ point<-polaire(x,y) point[2]<-point[2]+ang while(point[2] > 180){point[2]<-point[2]-360} while(point[2] < -180){point[2]<-point[2]+360} # cat(" rot CC",point[1]," XXX ",point," YYY\n") return(cartesienne(point[1],point[2])) } rotationXpoint <- function(ang,x,y,z){ point <- rotation(ang,y,z) y<-point[1] z<-point[2] return(c(x,y,z)) } rotationZpoint <- function(ang,x,y,z){ point <- rotation(ang,x,y) x<-point[1] y<-point[2] return(c(x,y,z)) } rotationX <- function(ang,vx,vy,vz){ for(i in 2:maxVal){ # cat("Rot ang",ang," VX= ",vx," VY= ",vy," VZ= ",vz,"EE\n") newPoint <- rotationXpoint(ang,vx[i],vy[i],vz[i]) vx[i]<-newPoint[1] vy[i]<-newPoint[2] vz[i]<-newPoint[3] } return(c(vx,vy,vz)) } rotationZ <- function(ang,vx,vy,vz){ for(i in 2:maxVal){ # cat("Rot ang",ang," VX= ",vx," VY= ",vy," VZ= ",vz,"EE\n") newPoint <- rotationZpoint(ang,vx[i],vy[i],vz[i]) vx[i]<-newPoint[1] vy[i]<-newPoint[2] vz[i]<-newPoint[3] } return(c(vx,vy,vz)) } matr<-cor(Dn4) matr